Jenkins Docker Container mit Docker erweitern
Zuerst erstellen wir uns ein Dockerfile
, wo wir das gewünschte Jenkins Container Image (jenkins/jenkins:2.332.3-lts-jdk11
) benutzern.
jenkns:~$ vi Dockerfile
Inhalt des Dockerfile
FROM jenkins/jenkins:2.332.3-lts-jdk11
ARG DEBIAN_FRONTEND=noninteractive
USER root
RUN apt update -y \
&& apt install -y ca-certificates gnupg lsb-release \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
RUN groupadd -g 998 docker
RUN mkdir -p /etc/apt/keyrings
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
RUN echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
RUN apt update && apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
RUN usermod -a -G docker jenkins
USER jenkins
Dann bauen wir daraus unser eigenes Jenkins Image und nennen es jenkins-docker
.
jenkins:~$ docker build . -t jenkins-docker
Nachdem das Docker Image erfolgreich gebaut wurde, erstellen wir uns folgendes docker-compose.yml
jenkins:~$ vi docker-compose.yml
Inhalt der docker-compose.yml
version: '3.3'
services:
jenkins:
container_name: jenkins-docker
image: jenkins-docker:latest
ports:
- 8080:8080
- 50000:50000
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./jenkins_home:/var/jenkins_home
restart: always
Dann erstellen wir uns noch das JENKINS_HOME
Verzeichnis als Volume.
jenkins:~$ mkdir -p jenkins_home
Uns zum Schluss starten wir unseren Container.
jenkins:~$ docker-compose up -d